iT邦幫忙

2021 iThome 鐵人賽

DAY 22
0
Software Development

@30天 | C# WixToolset + WPF 帥到不行的安裝包系列 第 22

@Day22 | C# WixToolset + WPF 帥到不行的安裝包 [建立基本的WPF框架]

  • 分享至 

  • xImage
  •  

終於

熬了那麼久 我們終於可以來首刻了….
我們先創出一個是至少能加入的WPF視窗的類別庫
可以直接選-自訂控制項程式庫

建立好專案後,我們依序建立Models Views ViewModels 的資料夾
接下來九成可以參考stoneniqiu寫的文章,
畢竟當初我也是跟著走就建立起來了!
↓↓↓↓↓↓↓↓ 請連過去 ↓↓↓↓↓↓↓↓↓↓
https://www.cnblogs.com/stoneniqiu/p/4399343.html

程式碼的部分就大同小異了,尊重原創我就不複製貼上程式碼了,
請連過去試過後再回來看接下來我改不一樣的部分 。


而我沒使用Prism,下面幾點是不同的地方

1.BootstrapperCore.config

這個assemblyName他命名這個專案時使用 CustomBA ,我們必須改成我們自己的名稱

<host assemblyName="DemoUse.WPFView">
    <supportedFramework version="v4\Full" />
    <supportedFramework version="v4\Client" />
</host>

2.InstallViewModel

參考到不能再參考後,還會有兩個錯誤

  • CustomBootstrapperApplication.Plan 改成
  CustomBootstrapperApplication.Model.Engine.Plan(LaunchAction.Uninstall);
  • HResult.Succeeded要安裝套件Microsoft.VisualStudio.Services.Client

3.同樣在InstallViewModel

搜尋DIAView取代成DemoInstaller,如果你在這邊有改名稱就用你自己的

4.同樣在InstallViewModel

InstallCommand 先一律改成為true

    InstallCommand = new RelayCommand(param => model.PlanAction(LaunchAction.Install), param => true);

5.BootstrapperCore.config

複製到輸出目錄=> 一律複製,不然建置會出現錯誤

6.Bundle.wxs

在引入完其他DLL後,要加入這個沒講到的,但有偷偷加的不然會出現錯誤

<WixVariable Id="WixMbaPrereqLicenseUrl" Value=""/>
 <WixVariable Id="WixMbaPrereqPackageId" Value=""/>

<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi" 
  xmlns:util="http://schemas.microsoft.com/wix/UtilExtension"
  xmlns:bal="http://schemas.microsoft.com/wix/BalExtension"
  xmlns:netfx="http://schemas.microsoft.com/wix/NetFxExtension">
<Bundle Name="DemoUse.Bootstrapper" Version="1.0.0.0" Manufacturer="Demo" UpgradeCode="37bbfd2f-0889-4b32-90db-eea5cbea61ce" DisableModify="yes" DisableRemove="yes">
 <BootstrapperApplicationRef Id="ManagedBootstrapperApplicationHost" >
   <Payload SourceFile="$(var.DemoUse.WPFView.TargetDir)DemoUse.WPFView.dll" />
   <Payload SourceFile="$(var.DemoUse.WPFView.TargetDir)BootstrapperCore.config" />
 </BootstrapperApplicationRef>
 <WixVariable Id="WixMbaPrereqLicenseUrl" Value=""/>
 <WixVariable Id="WixMbaPrereqPackageId" Value=""/>
 <Chain>
   <PackageGroupRef Id="AspNetCoreRuntime31Web"/>
   <MsiPackage Id="DemoInstaller" SourceFile="$(var.DemoUse.Installer.TargetDir)DemoUse.Installer.msi"
           Compressed="yes" DisplayInternalUI="yes" Visible="yes" />
 </Chain>

7.同樣在Bundle.wxs

將原本的安裝包給影藏掉,DisplayInternalUI 改為no

最後應該都沒問題後執行,
完成….



  • 後記

哈!就算我已經寫過了,
真的還是得花很久時間去找相關問題….
但這還只是開始而已 哈哈!

Day22程式碼
https://github.com/Aslan7826/defaultMVC/commits/Day22


上一篇
@Day21 | C# WixToolset + WPF 帥到不行的安裝包 [Log在哪邊查詢]
下一篇
@Day23 | C# WixToolset + WPF 帥到不行的安裝包 [87分帥的WPF外觀]
系列文
@30天 | C# WixToolset + WPF 帥到不行的安裝包30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言